package com.fbli.test.controller;

import com.fbli.test.common.result.ResultParam;
import com.fbli.test.common.result.ResultSend;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

@RestController
@RequestMapping("/")
public class StreamController {
    private static final Logger logger = LoggerFactory.getLogger(StreamController.class);
    @PostMapping("file")
    public ResultParam fileUpload(@RequestParam("myfile") MultipartFile myfile) throws IOException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String datefile = sdf.format(new Date());
        if (myfile.isEmpty()){
            return ResultSend.fail("500,\"目标文件夹为空\"");
        }
        String fileName = myfile.getOriginalFilename();     //获取上传文件的原名
        logger.info(fileName+"文件已上传");
        String fileSuffix = fileName.substring(fileName.lastIndexOf("."));      //获取文件后缀名
        String newfileName = datefile+fileSuffix;
        String filePath = "D:\\CoolBlog\\back-end\\src\\main\\resources\\images\\";        //文件存储到本地的路径
        //String filePath = "//CoolBlog/back-end/src/main/resources/images/";        //文件存储到本地的路径
        File getFile = new File(filePath+newfileName);     //本地文件名加路径的File对象
        if (getFile.getParentFile().exists()){
            myfile.transferTo(getFile);     //把内存文件写到磁盘里
            return ResultSend.success(200);
        }
        return ResultSend.fail("500,\"目标文件夹不存在\"");
    }
    /*
    *   byte[] bytes = multipartFile.getBytes();//获取multipartfile对象的byte数组，可转换文件流等
        String contentType = multipartFile.getContentType();//获取multipartfile的头类型
        InputStream inputStream = multipartFile.getInputStream();//获取输入流
        String name = multipartFile.getName();//获取文件名
        String originalFilename = multipartFile.getOriginalFilename();//获取初始文件名
        long size = multipartFile.getSize();//获取文件大小
        boolean empty = multipartFile.isEmpty();//判断对象内容是否是空
        multipartFile.transferTo(new File("文件路径"));//指定一个文件路径，可将multipartfile对象中的内容写入文件。若需要转换为file对象，需要创建一个临时文件
    */
}
